package Planificador.core.dispositivos;

import java.util.ArrayList;

import Planificador.core.algoritmos.Algoritmo;
import Planificador.core.proceso.Proceso;

public class Cola {

	protected Algoritmo algoritmo;
	protected ArrayList<Proceso> procesos = new ArrayList<Proceso>();

	public Cola(Algoritmo algoritmo) {
		this.algoritmo = algoritmo;
	}

	public Cola addProceso(Proceso p) {
		this.procesos.add(p);

		return this;
	}

	public void reset() {
		this.procesos.clear();

	}

	public Proceso siguienteProceso() {
		Proceso siguiente = this.algoritmo.getSiguiente(this.procesos);
		this.procesos.remove(siguiente);

		return siguiente;
	}

	public int size() {
		return this.procesos.size();
	}

	public boolean hayQueDesalojar(Proceso p) {
		return this.algoritmo.hayQueDesalojar(p, this.procesos);
	}

	public boolean hayQueDesalojarPorTimer(Proceso p) {
		return this.algoritmo.hayQueDesalojarPorTimer(p, this.procesos);
	}

}
